var mysql_config = require('../config').mysql;
var mysql = require('mysql2');
var logger = require('./logger').logger.getLogger("mysql");

const mysql_pool = mysql.createPool(mysql_config);

// 接收一个sql语句 以及所需的values
// 这里接收第二参数values的原因是可以使用mysql的占位符 '?'
// 比如 query(`select * from my_database where id = ?`, [1])
let mysql_query = async function (sql, values) {
    // 返回一个 Promise
    return new Promise((resolve, reject) => {
        mysql_pool.getConnection(function (err, connection) {
            if (err) {
                logger.fatal("cannot connnect to mysql!");
                connection.release();
                return reject(err);
            }
            connection.query(sql, values, (err, rows) => {
                if (err) {
                    logger.error("query mysql failed!");
                    connection.release();
                    return reject(err);
                }

                // 结束会话
                connection.release();
                resolve(rows);
            });
        });
    }).then(data => {
        return [null, data];
    }).catch(error => {
        return [error, null];
    });
}

module.exports = mysql_query
